package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 视频对象 spff_videos
 * 
 * @author xjj
 * @date 2025-09-11
 */
public class SpffVideos extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 视频ID */
    private Long id;

    /** 作者ID */
    @Excel(name = "作者ID")
    private Long userId;

    @Excel(name = "作者昵称")
    private String nickname;

    @Excel(name = "作者头像")
    private String avatar;

    /** 视频标题 */
    @Excel(name = "视频标题")
    private String title;

    /** 视频描述 */
    @Excel(name = "视频描述")
    private String description;

    /** 视频文件URL */
    @Excel(name = "视频文件URL")
    private String videoUrl;

    /** 封面URL */
    @Excel(name = "封面URL")
    private String coverUrl;

    /** 视频时长(秒) */
    @Excel(name = "视频时长(秒)")
    private Long duration;

    /** 视频宽度 */
    private Long width;

    /** 视频高度 */
    private Long height;

    /** 视频格式 */
    @Excel(name = "视频格式")
    private String format;

    /** 文件大小(字节) */
    @Excel(name = "文件大小(字节)")
    private Long size;

    /** 标签,逗号分隔 */
    @Excel(name = "标签,逗号分隔")
    private String tags;

    /** 分类ID */
    @Excel(name = "分类ID")
    private Long categoryId;

    /** 分类名称 */
    private String categoryName;

    /** 拍摄地点 */
    @Excel(name = "拍摄地点")
    private String location;

    /** 纬度 */
    @Excel(name = "纬度")
    private BigDecimal latitude;

    /** 经度 */
    @Excel(name = "经度")
    private BigDecimal longitude;

    /** 播放次数 */
    @Excel(name = "播放次数")
    private Long viewCount;

    /** 点赞数 */
    @Excel(name = "点赞数")
    private Long likeCount;

    /** 评论数 */
    @Excel(name = "评论数")
    private Long commentCount;

    /** 分享数 */
    @Excel(name = "分享数")
    private Long shareCount;

    /** 收藏数 */
    @Excel(name = "收藏数")
    private Long collectCount;

    /** 是否私密 */
    @Excel(name = "是否私密")
    private Integer isPrivate;

    /** 状态:0-删除,1-正常,2-审核中 */
    @Excel(name = "状态:0-删除,1-正常,2-审核中")
    private Integer status;

    /**  */
    private Date createdAt;

    /**  */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;
    
    /** 当前用户是否已点赞 (不存储到数据库，仅用于前端显示) */
    private Boolean isLike;

    /** 当前用户是否已收藏 (不存储到数据库，仅用于前端显示) */
    private Boolean isCollect;

    /** 当前用户是否已关注视频作者 (不存储到数据库，仅用于前端显示) */
    private Boolean isFollow;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    public void setTitle(String title)
    {
        this.title = title;
    }

    public String getTitle() 
    {
        return title;
    }

    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }

    public void setVideoUrl(String videoUrl) 
    {
        this.videoUrl = videoUrl;
    }

    public String getVideoUrl() 
    {
        return videoUrl;
    }

    public void setCoverUrl(String coverUrl) 
    {
        this.coverUrl = coverUrl;
    }

    public String getCoverUrl() 
    {
        return coverUrl;
    }

    public void setDuration(Long duration) 
    {
        this.duration = duration;
    }

    public Long getDuration() 
    {
        return duration;
    }

    public void setWidth(Long width) 
    {
        this.width = width;
    }

    public Long getWidth() 
    {
        return width;
    }

    public void setHeight(Long height) 
    {
        this.height = height;
    }

    public Long getHeight() 
    {
        return height;
    }

    public void setFormat(String format) 
    {
        this.format = format;
    }

    public String getFormat() 
    {
        return format;
    }

    public void setSize(Long size) 
    {
        this.size = size;
    }

    public Long getSize() 
    {
        return size;
    }

    public void setTags(String tags) 
    {
        this.tags = tags;
    }

    public String getTags() 
    {
        return tags;
    }

    public void setCategoryId(Long categoryId) 
    {
        this.categoryId = categoryId;
    }

    public Long getCategoryId() 
    {
        return categoryId;
    }

    public void setCategoryName(String categoryName) 
    {
        this.categoryName = categoryName;
    }

    public String getCategoryName() 
    {
        return categoryName;
    }

    public void setLocation(String location) 
    {
        this.location = location;
    }

    public String getLocation() 
    {
        return location;
    }

    public void setLatitude(BigDecimal latitude) 
    {
        this.latitude = latitude;
    }

    public BigDecimal getLatitude() 
    {
        return latitude;
    }

    public void setLongitude(BigDecimal longitude) 
    {
        this.longitude = longitude;
    }

    public BigDecimal getLongitude() 
    {
        return longitude;
    }

    public void setViewCount(Long viewCount) 
    {
        this.viewCount = viewCount;
    }

    public Long getViewCount() 
    {
        return viewCount;
    }

    public void setLikeCount(Long likeCount) 
    {
        this.likeCount = likeCount;
    }

    public Long getLikeCount() 
    {
        return likeCount;
    }

    public void setCommentCount(Long commentCount) 
    {
        this.commentCount = commentCount;
    }

    public Long getCommentCount() 
    {
        return commentCount;
    }

    public void setShareCount(Long shareCount) 
    {
        this.shareCount = shareCount;
    }

    public Long getShareCount() 
    {
        return shareCount;
    }

    public void setCollectCount(Long collectCount) 
    {
        this.collectCount = collectCount;
    }

    public Long getCollectCount() 
    {
        return collectCount;
    }

    public void setIsPrivate(Integer isPrivate) 
    {
        this.isPrivate = isPrivate;
    }

    public Integer getIsPrivate() 
    {
        return isPrivate;
    }

    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("userId", getUserId())
            .append("title", getTitle())
            .append("description", getDescription())
            .append("videoUrl", getVideoUrl())
            .append("coverUrl", getCoverUrl())
            .append("duration", getDuration())
            .append("width", getWidth())
            .append("height", getHeight())
            .append("format", getFormat())
            .append("size", getSize())
            .append("tags", getTags())
            .append("categoryId", getCategoryId())
            .append("categoryName", getCategoryName())
            .append("location", getLocation())
            .append("latitude", getLatitude())
            .append("longitude", getLongitude())
            .append("viewCount", getViewCount())
            .append("likeCount", getLikeCount())
            .append("commentCount", getCommentCount())
            .append("shareCount", getShareCount())
            .append("collectCount", getCollectCount())
            .append("isPrivate", getIsPrivate())
            .append("status", getStatus())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
                .append("nickname", getNickname())
                .append("isLike", getIsLike())
                .append("isCollect", getIsCollect())
                .append("isFollow", getIsFollow())
                .append("avatar", getAvatar())
            .toString();
    }

    public Boolean getIsLike() {
        return isLike;
    }

    public void setIsLike(Boolean isLike) {
        this.isLike = isLike;
    }

    public Boolean getIsCollect() {
        return isCollect;
    }

    public void setIsCollect(Boolean isCollect) {
        this.isCollect = isCollect;
    }

    public Boolean getIsFollow() {
        return isFollow;
    }

    public void setIsFollow(Boolean isFollow) {
        this.isFollow = isFollow;
    }
}
